package dominio.individuos

import dominio.datos.Hobbie
import dominio.datos.Rasgo
import java.util.ArrayList
import java.util.List
import org.uqbar.commons.model.ObservableUtils
import org.uqbar.commons.utils.Observable

@Observable
class Villano extends Ocupante {
	
	private String nombre
	@Property Sexo sexo
	@Property List<Rasgo> rasgos
	@Property List<Hobbie> hobbies
	@Property boolean tieneNombreValido
	@Property boolean tieneOrdenDeArresto
	
	new() {
		this.rasgos = new ArrayList<Rasgo>
		this.hobbies = new ArrayList<Hobbie>
		this.tieneNombreValido = false
		this.tieneOrdenDeArresto = false
	}
	
	def sexosPosibles() {
		#[Sexo.Femenino, Sexo.Masculino]
	}
	
	def getNombre() {
		this.nombre
	} 
	
	def setNombre(String nombre) {
		this.nombre = nombre
		tieneNombreValido = esNombreValido
		ObservableUtils.firePropertyChanged(this, "nombre", nombre)
		ObservableUtils.firePropertyChanged(this, "tieneNombreValido", tieneNombreValido)
	}
	
	def esNombreValido() {
		nombre = nombre.trim
		nombre.length > 0
	}
	
	override esVillano() { true }
	
}

@Observable
public enum Sexo {
		Femenino, 
		Masculino
}
	
